package com.ehsy.service;

/**
 * @author YanZhen_Li
 * @version 1.0
 * @title BaseRequestService
 * @description @BaseRequest注解定义在接口类上，在@BaseRequest上定义的属性会被分配到该接口中每一个方法上，但方法上定义的请求属性会覆盖
 *              @BaseRequest上重复定义的内容。 因此可以认为@BaseRequest上定义的属性内容是所在接口中所有请求的默认属性。
 * @create 2024/6/18 10:57
 */

import com.dtflys.forest.annotation.BaseRequest;
import com.dtflys.forest.annotation.Get;
import com.dtflys.forest.annotation.Query;
import com.dtflys.forest.annotation.Var;

/**
 * @BaseRequest 为配置接口层级请求信息的注解
 * 其属性会成为该接口下所有请求的默认属性
 * 但可以被方法上定义的属性所覆盖
 */
@BaseRequest(
        baseURL = "https://www.baidu.com",     // 默认域名
        headers = {
                "Accept:text/plain"                // 默认请求头
        },
        sslProtocol = "TLS"                    // 默认单向SSL协议
)
public interface BaseRequestService {
    // 方法的URL不必再写域名部分
    @Get("/s")
    String test1(@Query("wd") String wd);

    // 若方法的URL是完整包含http://开头的，那么会以方法的URL中域名为准，不会被接口层级中的baseURL属性覆盖
    @Get("https://www.sogou.com/web")
    String test2(@Query("query") String query);


    @Get(
            url = "https://baike.baidu.com/item/{username}",
            headers = {
                    "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"      // 覆盖接口层级配置的请求头信息
            }
    )
    String test3(@Var("username") String username);
}
